package com.example.share_doc.util;

import lombok.Data;

@Data // Lombok注解，用于自动生成getter、setter、equals、hashCode和toString方法
public class R<T> {

    private Integer code; // 响应状态码，如200表示成功，400表示客户端错误等
    private String message; // 响应信息，成功或错误的具体描述
    private T data; // 泛型数据，可以根据实际需求存放不同类型的数据

    // 构造函数
    public R() {}

    // 成功时的构造函数
    public static <T> R<T> success(T data) {
        R<T> r = new R<>();
        r.setCode(200);
        r.setMessage("操作成功");
        r.setData(data);
        return r;
    }

    // 失败时的构造函数
    public static <T> R<T> fail(Integer code, String message) {
        R<T> r = new R<>();
        r.setCode(code);
        r.setMessage(message);
        return r;
    }

    // 处理业务异常的静态方法
    public static <T> R<T> handleBusinessException(BusinessException e) {
        R<T> r = new R<>();
        r.setCode(e.getCode());
        r.setMessage(e.getMessage());
        return r;
    }
}